专利摘要:
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。或者,可配置與特定程式語言相關之編譯器以映射獨立介面描述至特定程式語言。在一些實施例中,可配置應用程式以程式化決定一或更多個作業系統之介面。
公开号:TW201308209A
申请号:TW100136563
申请日:2011-10-07
公开日:2013-02-16
发明作者:Brent E Rector;Elliot H Omiya;Jerry J Dunietz;Martyn S Lovell;Ales Holecek;Mahesh Prakriya;Stephen C Rowe;James F Springfield;Noel R Cross;Tassaduq H Basu;Patrick H Dussud;Raja Krishnaswamy;Steven Edward Lucco
申请人:Microsoft Corp;
IPC主号:G06F9-00
专利说明:
運行時間系統
本發明係關於運行時間系統。
今日之電腦常常包含作業系統以管理對硬體及軟體資源之存取。接著,作業系統能包含各種類型之介面(例如,應用程式介面;Application Programming Interface(API))以致使程式設計師及/或應用程式能存取該等資源。在一些情況下,考量到使用特定程式語言來編程介面。當客戶端應用程式是以特定程式語言撰寫而成時,客戶端應用程式能以本地特定程式語言之方式來存取介面。然而,使用與編程介面不同之程式語言所撰寫之客戶端應用程式為了呼叫介面,該等客戶端應用程式有時最終可利用額外之程式碼及/或包裝函數。
通常,於作業系統外部文檔紀錄介面。為了成功呼叫介面及撰寫包裝函數,程式設計師諮詢外部文件以決定可用之介面及決定相關之呼叫參數等。新版作業系統可包含新介面、針對舊介面之修改及針對廢棄介面之移除。因此,為了維持API當下之設定,程式設計師必須諮詢每個新版本作業系統上之外部文件。該諮詢動作有時能導致作業系統中釋放介面之動作及程式中包含介面之動作間的延遲。
在此提供之摘要是為了以一種簡單的形式來介紹概念之選擇,該簡單形式將下面以詳細的例子作進一步描述。本摘要並非想指出所請求標的之主要特徵或重要特徵,亦不是想使用本摘要來限制所請求標的之範圍。
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。或者,可配置與特定程式語言相關之編譯器以映射獨立介面描述至特定程式語言。在一些實施例中,可配置應用程式以程式化決定一或更多個作業系統之介面。
一些實施例能以物件導向方式來模組化一或更多個作業系統之介面,該物件導向方式係使用抽象型態系統。在一些實施例中,延伸介面定義語言(extended Interface Definition Language(IDL))可包含語法以描述在一或更多個介面間之關係。在一些實施例中,二元契約可經配置以顯露與抽象型態系統相關連之行為。 概要
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。可配置抽象型態系統與介面定義語言(Interface Definition Language(IDL))之組合以描述及/或定義介面。在一些實施例中,可用物件導向方式來描述介面。或者,可配置與特定程式語言相關之編譯器以映射獨立於語言之介面描述至特定程式語言中之適當建構。或者,可配置程式語言應用程式運行時間環境以動態(例如,在運行時間執行期間)映射獨立於語言之介面描述至特定運行時間環境中之適當建構。在一些實施例中,可配置應用程式以程式化決定獨立介面描述。在一些情況下,可用機器可讀取格式來儲存獨立介面描述。
在後面的討論中,提供了名為「作業環境」之一節,及描述可使用一或更多個實施例之環境。在該名為「作業環境」之一節後,名為「作業系統元件存取」之一節描述架構,該架構致使多個程式語言以可程式化方式存取系統元件。接著,名為「使用抽象型態系統以模組化物件導向語言」之一節描述如何使用抽象型態系統與延伸IDL之結合來以物件導向之方式描述作業系統介面。最後,名為「示例性系統」之一節描述示例性系統,該示例性系統可經使用以實施一或更多個實施例。
現已提供各種實施例之概要,該等實施例將在下面描述,現在思考示例性作業環境,在該示例性作業環境中可實施一或更多個實施例。
作業環境
第1圖依照一或更多個實施例而圖示作業環境,一般而言位於100處。環境100包含計算裝置102,該計算裝置102具有一或更多個處理器104及一或更多個電腦可讀取儲存媒體106。舉例而言但不加以限制,電腦可讀取儲存媒體可包含所有形式之揮發性及非揮發性記憶體及/或儲存媒體,該揮發性及非揮發性記憶體及/或儲存媒體通常與計算裝置相關。此類媒體可包含唯讀記憶體(ROM)、隨機存取記憶體(RAM)、快取記憶體、硬碟、可移除式媒體等等。計算裝置之一特定實例如以下第5圖所圖示及描述。
此外,計算裝置102包含作業系統(OS)108及相關作業系統介面110。如第1圖圖示之不同模組,我們將可體會及瞭解,可實施作業系統108及作業系統介面110為相異模組、結合式模組或不背離所請求標的範圍之任何相異模組與結合式模組之結合。作業系統108代表功能性,該功能性經配置以管理計算裝置102之軟體及/或硬體資源。作業系統介面110代表可程式化存取服務及/或作業系統108所提供之功能性(例如,記憶體管理、檔案管理、服務、函數、資源管理、周邊裝置管理等等)。
計算裝置102亦包含一或更多個描述語言檔案112,該描述語言檔案112代表一或更多個檔案,該檔案經配置以描述一或更多個介面。在一些實施例中,介面可與作業系統相關(例如,作業系統介面110)。描述語言檔案可使用任何適當之描述、標示語言及/或語法(例如,使用介面定義語言(IDL))、可延伸標示語言(XML)等等來描述介面。
此外,計算裝置102亦包含一或更多個編輯器/編譯器模組114。在一些實施例中,基於檔案112,編輯器/編譯器模組114代表功能性,該功能性為讀取及/或解譯描述語言檔案112及產生輸出(例如,一或更多個二元元資料檔案116)。二元元資料檔案116代表一或更多個機器可讀取檔案,該機器可讀取檔案包含與作業系統介面110及/或作業系統108相關之資訊(例如,輸入參數型態、參數呼叫順序、介面間之關係等等)。
或者,編輯器/編譯器模組114代表讀取及/或解密一或更多個原始碼檔案118之功能性。原始碼檔案118相當於一或更多個檔案,該檔案包含程式敘述,該程式敘述與至少一個程式語言相關。在一些情況下,原始碼檔案118可包含呼叫一或更多個作業系統介面之敘述。基於原始碼檔案,編輯器/編譯器模組114解譯原始碼檔案118,而且編輯器/編譯器模組114產生機器可讀取程式碼。
舉例而言但不加以限制,計算裝置102可具體實施為任何適當計算裝置(例如,桌上型電腦、可攜式電腦、筆記型電腦、手持式電腦(例如,個人數位助理(PDA))、手機等等)。
現已描述示例性作業環境,現在思考可程式化顯露作業系統元件至一或更多個程式語言之討論。
作業系統元件存取
在計算裝置上執行之應用程式常常利用作業系統提供之特徵,該作業系統在計算裝置上執行。作業系統可賦能簡化存取計算裝置上之相關資源,且作業系統亦可提供服務。有時,以可程式化方式存取該等特徵、服務及/或資源。然而,若作業系統以一種程式語言格式來顯露該等功能,該程式語言格式異於撰寫應用程式之程式語言,則程式設計師通常將撰寫包裝函數以協助在不同程式語言間之轉換。舉例而言,思考介面,該介面已撰寫完成及/或顯露為平坦、輸出之「C」函數。為了賦能C#或Visual Basic程式設計師之程式語言能成功地呼叫該「C」函數,欲使用該「C」函數之C#或Visual Basic程式設計師可包含特定敘述及/或額外程式碼。結果,利用與顯露之介面相異之程式語言來撰寫之應用程式無法存取該等顯露之介面直至已撰寫額外敘述及/或包裝函數。
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。描述獨立於程式語言之介面賦能多個程式語言容易存取介面。當程式語言學習如何解譯介面之獨立於語言之描述時,可應用該解譯語言之知識於現存及未來之介面,該等現存及未來之介面使用獨立於語言之描述。在一些實施例中,可使用抽象型態系統以描述介面。接著,特定程式語言或相關之程式語言編譯器可映射抽象型態系統至該抽象型態系統之相關型態系統以解譯及/或存取介面。
思考第2圖,該第2圖依照一或更多個實施例而圖示架構200。架構200包含作業系統202,該作業系統202可經配置以在計算裝置上執行。為了簡潔描述的緣故,我們應理解,將不圖示作業系統202之所有系統元件。作業系統202包含一或更多個作業系統元件204,該作業系統元件204經配置以管理與計算裝置相關之資源。在一些實施例中,作業系統元件204可提供可程式化存取資源,且作業系統元件204亦可提供一或更多個服務及/或與管理資源相關之特徵。作業系統元件204亦能包含與作業系統202相關之基本元件,且作業系統元件204亦可包含以基本元件建立之複雜元件。
在一些實施例中,可藉由一或更多個介面(例如,應用程式介面(API))來顯露作業系統元件204。在此實例中,作業系統202包含新API家族206、以COM為主之API家族208及以平坦輸出為主之API家族210。新API家族206代表一或更多個相關API,在該相關API中使用抽象型態系統來直接描述功能性(亦即,類別、介面、方法、性質、事件等等),該新API家族206之詳細內容將在後面作進一步描述。以COM為主之API家族208代表一或更多個API,在該等API中使用元件物件模型(Component Object Model;COM)之型態系統來描述功能性。以平坦輸出為主之API家族210代表一或更多個API,在該等API中使用方法特徵(亦即,包含方法名稱呼叫協定、方法參數之個數及型態之方法)來描述功能性。以平坦輸出為主之API進一步代表API,該等API僅可藉由該等API之名稱來識別該等API,而且將不安排該等API為類別及/或物件導向方式。欲決定可用API之程式設計師可手動及/或以可程式化方式存取每個API之描述。舉例而言,程式設計師可存取相關元資料212以決定新API家族206存在於什麼介面及決定如何呼叫該等介面。當以COM為主之API家族208及以平坦輸出為主之API家族210分別具有在元資料214中與在元資料216中之相關且獨立於語言之型態系統描述時,程式設計師會先撰寫包裝程式碼以映射獨立於語言之型態系統描述至以COM為主及/或以平坦輸出為主之API。
可配置元資料212、214及216以包含資訊,該資訊描述相關介面之各種態樣(例如,版本資訊、可使用之方法、介面使用之參數、參數之資料型態、傳遞參數之順序等)。在一些實施例中,元資料可包含與介面相關之階層式資訊(例如,描述介面間關係及/或以物件導向方式描述介面之資訊)。元資料可經配置以包含類別描述、相關方法及類別之參數等等。在一些情況下,一或更多IDL檔案可經延伸以包含該等描述中之一些描述,且一或更多IDL檔案可經使用於產生一或更多元資料檔案。在一些情況下,元資料可為部份基於一或更多IDL檔案,該元資料之詳細內容將在後面作進一步描述。
作業系統202亦包含應用程式二元介面(application binary interface;ABI)218。ABI在機器位描述用以呼叫函數、方法、API等等之二元契約。二元契約可包含與函數相關之識別或名稱、可用以呼叫函數之特徵、傳遞進函數之參數順序及/或與參數相關之資料型態等。另外,二元契約可包含定義及/或規則,該規則用以顯露與型態系統之至少一個型態相關之行為。通常並未改變與二元契約相關之行為及/或用二元契約定義之行為。舉例而言,若二元契約之特徵及/或識別維持不變,則該二元契約之相關行為亦維持不變。
應用程式二元介面218代表經由二元顯露之功能性,該二元可被其他應用程式可靠地引動。在該實例中,應用程式二元介面218包含介面、基本型態及與作業系統元件204相關之基本樣式。作業系統202外部之一或更多個應用程式(例如,應用程式220)能經由一或更多個應用程式二元介面218來存取作業系統元件204。
應用程式220能包含一或更多個應用程式,該應用程式係由一或更多個程式語言(例如,HTML、JavaScript、Visual Basic、C#、C++等等)所產生。在一些實施例中,應用程式220包含一或更多個作業系統元件之呼叫。在一些情況下,應用程式220可經配置以事先以可程式化方式決定可用之介面,然後應用程式220呼叫一或更多個已決定可用之介面。在一些情況下,應用程式220借助來自一或更多個已產生之語言投影模組222及經由應用程式二元介面218來存取介面,該存取介面之詳細內容將在後面作進一步描述。
在一或更多個實施例中,已產生之語言投影模組222映射抽象型態系統定義至特定程式語言。可映射任何適當之程式語言,該映射動作之實例如上所述。在一些實施例中,已產生之語言投影模組針對每一程式語言可為唯一。在其他實施例中,已產生之語言投影模組可為多用途,且已產生之語言投影模組可為多個程式語言所用。映射致使使用抽象型態系統描述之當下及未來介面無須額外程式敘述(亦即,包裝函數)即能存取特定程式語言。映射進一步允許特定程式語言以一種本地特定程式語言之方式來呼叫介面。可映射任何適當型態之資訊(例如,類別、資料型態、函數指標、結構等等)。
思考當程式設計師欲存取作業系統元件之實例。當程式設計師撰寫應用程式(例如,應用程式220)時,該程式設計師在編輯器/編譯器中產生原始碼,該編輯器/編譯器與至少一個特定程式語言相關。為了獲得與介面之資訊及/或可用作業系統相關之API之資訊,編輯器/編譯器可經配置以存取元資料檔案。舉例而言,在一些實施例中,當程式設計師撰寫包含呼叫類別之一行程式碼時,該類別經實作為作業系統元件之一部份,編譯器/編輯器可查詢與類別相關之元資料,且編譯器/編輯器可傳回與類別相關之方法、性質等等之清單給程式設計師。該清單可包含任何種類之資訊、與類別相關之方法及/或類別之性質。或者,該清單可包含可用類別之清單。在一些實施例中,可提供資訊為自動完成特徵之一部份,該自動完成特徵經配置以在視覺上呈現類別之相關方法、性質等以供使用者選擇。在方法及/或性質的選擇上,為了更有效率及更精確的產生程式碼,編譯器/編輯器可插入對應語法至原始碼中。
在一些實施例中,程式設計師可撰寫原始碼,該原始碼可經配置以實例化作業系統元件之類別物件。當在運行時間呼叫作業系統時,該作業系統動態建立類別之實例以傳回至呼叫碼。然而,傳回至呼叫碼之實例可為「抽象物件」,或該傳回至呼叫碼之實例可為與作業系統元件相關之抽象型態系統中所描述之物件,該傳回至呼叫碼之實例如以下之進一步描述。為了連結抽象物件型態及與呼叫碼相關且為具體資料型態之程式語言,編譯器可經配置以轉化抽象物件為該編輯器相關之程式語言中之可比較型態,及/或編譯器可經配置以映射抽象物件至該編輯器相關之程式語言中之可比較型態(例如,經由已產生之語言投影模組222)。在一些情況下,可使用代理伺服器以連結呼叫作業系統元件之抽象物件與呼叫程式語言相關之具體物件。
思考經配置以模擬作業系統元件類別之行為之代理伺服器。在一些情況下,可建立代理伺服器,該代理伺服器包含類別之相關型態之殘根模組、類別之方法、類別之性質、類別之事件及類別之介面等。可用呼叫碼之程式語言來建構代理伺服器,然後致使該呼叫之程式碼以一種本地呼叫程式碼之方式來存取代理伺服器。殘根模組可包含適當知識及/或程式碼以轉化及/或映射該等呼叫至(及來自)作業系統。舉例而言,在一些實施例中,代理伺服器可與應用程式二元介面218溝通。
在一些實施例中,程式語言如上所述可插入包裝函數及/或代理伺服器以映射抽象型態至本地程式語言之型態。程式語言編輯器/編譯器可經配置以讀取元資料(例如,元資料檔案212、214及216);程式語言編輯器/編譯器可經配置以決定正經使用之抽象型態;程式語言編輯器/編譯器可經配置以映射抽象型態至相關程式語言中之一或更多個可比較型態;及程式語言編輯器/編譯器可經配置以撰寫相關包裝函數及/或代理伺服器至與作業系統元件相關之抽象型態。一旦針對每一型態之映射存在於程式語言及抽象型態系統之間,藉由抽象型態系統定義之任何當下或未來介面可在無須借助來自程式設計師之額外編程的情況下自動化供程式語言存取。
舉例而言,思考第3圖,該第3圖依照一或更多個實施例而圖示流程圖,該流程圖係以一種方法中之步驟來描述。可藉由任何適當硬體、軟體、韌體來執行該方法,或可藉由任何適當硬體、軟體、韌體之結合物來執行該方法。在至少一些實施例中,利用軟體(例如,編輯器/編譯器模組114)來執行該方法之態樣,該軟體在計算裝置102上執行。
步驟302接收針對資訊之請求,該資訊與可用作業系統介面相關。舉例而言,該請求可經配置以請求可用之介面及/或與可用介面相關之其他資訊。該請求之動作可用任何適當方式達成。在一些實施例中,該請求可藉由原始碼編輯器自動化產生,在該原始碼編輯器內正進行開發原始碼。該原始碼編輯器可識別作業系統介面及/或元件之呼叫,且該原始碼編輯器一旦識別該呼叫,則該原始碼編輯器送出針對與作業系統介面相關之可用方法、性質等等之請求。在一些實施例中,該請求可藉由上下拉選單、選擇紐等等選擇而手動產生。該請求可經配置以請求與所有可用作業系統介面、一些可用作業系統介面、個別作業系統介面相關之資訊,或該請求可經配置以請求與所有可用作業系統介面、一些可用作業系統介面、個別作業系統介面之任何組合相關之資訊。在一些實施例中,可經運行應用程式(例如,第2圖之應用程式220)產生請求。
步驟304獲得與一或更多個作業系統介面相關之資訊。舉例而言,在一些實施例中,可查詢作業系統以獲得資訊。或者,可包含資訊在一或更多個元資料檔案中,且可藉由查詢及/或讀取元資料檔案來獲得資訊。如上文及下文中所述,元資料檔案可為機器可讀取格式,且元資料檔案可包含階層式資訊(例如,與介面相關之物件關係資訊)。
回應於獲得資訊,步驟306決定一或更多個抽象型態,該抽象型態與一或更多個作業系統介面相關。如同上面所描述的,在一些實施例中,可經由使用抽象型態系統及使用獨立於特定程式語言之方式來描述作業系統介面。回應於決定與一或更多個作業系統介面相關之一或更多個抽象型態,步驟310映射一或更多個抽象型態之每一抽象型態至與特定程式語言相關之型態。
思考介面描述語言之實例,該介面描述語言將ABI寫至OpenPicker運行時間類別。包含在OpenPicker運行時間類別內的是PickMultipleItems方法,該PickMultipleItems方法經配置以回傳FileItem物件之收集。在此特定實例中,FileItem類別包含GetProperties方法,該GetProperties方法經配置以回傳包含名稱數值之FileItemProperties物件。

在一些實施例中,C#語言編譯器可映射描述至C#語言建構。藉由映射描述至特定語言的建構,可用一種本地C#程式語言之方式來存取作業系統介面,如以下說明:

在另一實例中,可映射結構至JavaScript物件,該結構係由一種獨立於語言之方式定義。思考已定義之FrameRate結構之實例,該FrameRate結構使用:

FrameRate結構包含兩個UINIT32體(fields):Numerator及Denominator。因為FrameRate結構係由使用獨立於語言之項定義,因此當使用適當映射時,可藉由各種特定語言程式來存取架構(例如,經由JavaScript來存取架構)。然而,JavaScript未包括包含結構之概念,該結構包含體或無正負號之32位元整數之概念。作為替代的,JavaScript包含具有性質之物件之概念及Number之概念。在此實例中,上述結構定義可為具有兩性質之物件,該兩性質名為Numerator與Denominator,型態Number之兩者為:
//JavaScript use of the above var framerate=videoType.Framerate;//Get a framerate object var ratio=framerate.Numerator/framerate.Denominator;
已思考可程式化顯露作業系統元件至一或更多個程式語言,現在思考模組化物件導向語言之討論,該模組化物件導向語言依照一或更多個實施例而具有抽象型態系統。
用抽象型態系統來模組化物件導向語言當已使用特定程式語言來定義作業系統介面時,與介面相關之參數具有特定程式語言之資料型態之特徵。接著,介面之呼叫遵守特定程式語言定義資料型態之規則。針對以特定程式語言撰寫程式為介面,因為該等程式具有相同資料型態定義,因此符合該等資料型態之介面變得不重要。並非用特定程式語言撰寫但又呼叫介面之程式為了符合資料型態,該等程式有時可減少該等程式之能力。舉例而言,呼叫以不同程式語言編程之介面之程式設計師可增加程式碼以轉換不同程式語言及/或資料型態;及/或呼叫來自不同程式語言之介面之程式設計師可增加程式碼以連結不同程式語言及/或資料型態。結果,資料型態間之連結處理可常常減少呼叫程式語言之資料型態特有之功能性。此外,該轉換有時可以是複雜的,及在一些情況下,若不同程式語言具有異於物件導向之概念,則該轉換是不存在的。
各種實施例能以物件導向方式來模組化一或更多個作業系統之介面,該作業系統利用抽象型態系統。在一些實施例中,延伸IDL可包含語法以描述介於一或更多個介面間之關係。或者,延伸IDL可包含規則,該等規則管理如何描述介面,及/或該等規則管理如何定義介面。在一些實施例中,二元契約可經配置以顯露與抽象型態系統相關之行為,且該二元契約進一步可經配置以包含與聚合資料型態相關之資訊。
物件導向模組描述使用類別階層之物件,此處之類別可包含方法、性質、繼承等。通常但並非必要地,物件導向類別包含一或更多個建構子。建構子是類別函數,當該類別函數經呼叫時,建立記憶體中之類別之實例/物件以供使用。類別之一些建構子包含額外程式碼,該程式碼準備已建立之實例/物件以供使用。舉例而言,該額外程式碼可初始化類別之成員變數;該額外程式碼可執行類別之相關啟動常式等。預設建構子不具有輸入參數,而非預設建構子具有一或更多個輸入參數。
在一些實施例中,可限制作業系統元件之一或更多個建構子以遵守特定的實施及/或設計。藉由遵守特定實施,建構子之呼叫可依靠該建構子及/或該組合物件之運作。舉例而言,可限制作業系統元件之預設建構子;及/或映射作業系統元件之預設建構子至類別工廠物件(class factory object)之IActivationFactory介面之ActivateInstance方法之預設建構子。類別工廠物件是一種設計樣式,該設計樣式可經模組化而無須指定已創立之物件之完全相同類別即可建立物件。藉由使用類別工廠模組,預設建構子可維持充分程度之抽象化。亦可限制置放作業系統元件之非預設建構子於一或更多個特定之設計介面(例如,類別工廠之可供選擇介面)之上。
一種指定介面描述之方法是經由描述語言檔案(例如,類似IDL之延伸描述語言及/或XML)之使用。在一些實施例中,延伸描述語言可經配置以致使描述及/或設計作業系統元件之一或更多個建構子介面。舉例而言,思考如下述之Compressor類別。在此實例中,Compressor類別宣告該Compressor類別之ICompressorFactory介面包含與類別相關之非預設建構子方法之至少一個定義。

可包含該等描述於一或更多個檔案中;及使用該等描述以連結至少一個編譯器來產生一或更多個介面描述,該介面描述係為機器可讀取格式,詳細內容將在後面作進一步描述。
物件導向類別可經配置以包含至少一個靜態方法、至少一個靜態性質、至少一個靜態事件;或物件導向類別可經配置以包含至少一個靜態方法、至少一個靜態性質、至少一個靜態事件之任何結合。類似限制建構子之定義,靜態方法、靜態性質及/或靜態事件可經設計以符合一或更多個特定設計介面。思考CallControl類別之實例,該CallControl類別宣告靜態方法、性質及事件。在此實例中,定義靜態方法、性質及事件於

物件導向類別可經配置以包含至少一個實例方法、至少一個實例性質、至少一個實例事件;或物件導向類別可經配置以包含至少一個實例方法、至少一個實例性質、至少一個實例事件之任何結合。實例成員(方法、性質及事件)操作於類別之特定實例上,而類別之所有成員共享靜態成員。類別可經設計以符合一或更多個特定設計介面(例如,上述實例中,該CallControl類別宣告該CallControl類別之相關實例方法、性質及事件經定義於ICallControl介面中)。在一些實施例中,一或更多個作業系統元件可在類別工廠設計樣式之後模組化/實作該等介面;及一或更多個作業系統元件可在類別工廠設計樣式上模組化/實作該等介面。
特定程式語言是否呼叫特定語言建構子、靜態成員或實例成員、語言投影模組(例如,第2圖之已產生之語言投影模組222)能映射特定程式語言呼叫至適當方法及/或介面,該介面與適當類別工廠物件或實例相關。在一些實施例中,類別工廠物件與作業系統元件及/或執行時間類別相關。舉例而言,程式碼之方法特徵可經配對至類別工廠物件之適當建構子介面方法,該程式碼導引編譯器以建立運行時間類別之實例。在另一實例中,語言投影模組可經配置以配對特定語言方法特徵至與作業系統元件相關之靜態介面上之適當配對介面方法,該特定語言方法特徵導引編譯器以呼叫靜態方法。在另一實例中,語言投影模組可經配置以配對特定語言方法特徵至與作業系統元件之特定實例相關之介面上之適當配對介面方法,該特定語言方法特徵導引編譯器以呼叫實例方法。
在一些實施例中,IDL編譯器可經配置以讀取與至少一個作業系統元件介面描述相關之一或更多個延伸IDL檔案,且IDL編譯器可經配置以產生相關機器可讀取檔案。可在延伸IDL檔案中包含任何適當型態之資訊(例如,資訊,該資訊描述型態、方法、性質、事件及相關作業系統元件之介面)。在一些情況下,編譯器可產生機器可讀取元資料檔案。一或更多個應用程式可經配置以讀取相關機器可讀取檔案以可程式化方式決定可用之介面、相關敘述及/或介面之宣告、介面之參數之資料型態等。可用任何適當程式語言撰寫一或更多個應用程式,該可用任何適當程式語言撰寫一或更多個應用程式之實例如上所提供。
在一些實施例中,IDL編譯器可產生一或更多個溝通代理伺服器及/或程式碼殘根模組,該一或更多個溝通代理伺服器及/或程式碼殘根模組與型態、方法、性質、事件及/或介面相關。該等溝通代理伺服器及/或程式碼殘根模組可額外經配置以供作業系統元件存取。
思考第4圖,該第4圖依照一或更多個實施例而圖示介於延伸IDL檔案402、編譯器404及元資料檔案406間之關係。在此,藉由編譯器404接收延伸IDL檔案402及處理延伸IDL檔案402以產生元資料檔案406。在至少一些實施例中,可實施關係中之已圖示模組為軟體、硬體;或可實施關係中之已圖示模組為軟體、硬體之任何組合(例如,編輯器/編譯器模組114,該編輯器/編譯器模組在計算裝置102上執行)。
在已圖示及已敘述之實施例中,延伸IDL檔案402可包含一或更多個檔案,該一或更多個檔案定義一或更多個作業系統元件介面(例如,作業系統API)。可描述任何適當型態之作業系統元件(例如,檔案物件/檔案類別、字串物件/字串類別、圖形物件/圖形類別、文化物件/文化類別等等)。每一物件可包含可與物件導向類別相關之方法、性質、繼承資訊等。延伸IDL可包含語法以致使描述介於一或更多個介面間之該等型態之關係。或者,延伸IDL可描述抽象型態系統。
在一些實施例中,抽象型態系統可經配置以支持及/或描述各種資料型態。舉例而言,可定義方法介面以映射所有介面在物件之實例上操作之實體需求。在另一實施例中,可使用抽象型態系統以定義函數指標,該函數指標可經呼叫以跨越程式語言及元件界限。第一元件可引起函數指標或委派,該委派受限於方法。然後可傳送委派以跨過二元編譯界限至任意程式語言撰寫成之第二元件,且引動該委派。各種實施例致使延伸IDL定義及/或描述該等資料型態;各種實施例致使延伸IDL定義組成基本資料型態之規則;且各種實施例亦致使延伸IDL定義合成資料型態為聚合型態之規則。
在已圖示及已描述之實施例中,編譯器404接受一或更多個輸入檔案(例如,延伸IDL檔案402),且編譯器404產生一或更多個元資料檔案406。元資料檔案406可經配置以供自動化存取。舉例而言,可用機器可讀取格式來儲存元資料檔案。在一些實施例中,元資料檔案406與一或更多個作業系統元件相關。或者,如上所述,編譯器404可在溝通代理伺服器外產生殘根模組。
應用程式408可動態決定可用之API(例如,經由讀取元資料檔案406)。在一些實施例中,應用程式408可經配置為第1圖之編輯器/編譯器114。經由元資料檔案406,應用程式可決定是否具有後續版本之功能性;應用程式可決定API使用什麼參數;應用程式亦可在運行時間通知使用者API具有彼等功能性。因此,藉由包含具有機器可讀取格式之API描述,亦藉由敘述具有抽象型態系統之API,應用程式及/或語言能容易地且幾乎不需藉助程式設計師幫忙來存取API,該等應用程式及/或語言支持介於抽象型態系統及特定程式語言間之映射。
我們已思考具有抽象型態系統之模組化物件導向語言,現在接著思考依照一或更多個實施例之示例性系統之討論。
示例性系統
第5圖圖示示例性計算裝置500,該計算裝置500能經使用以實施上述之各種實施例。舉例而言,計算裝置500可為第1圖之計算裝置102或任何其他適當之計算裝置。
計算裝置500包含一或更多個處理器或處理單元502、一或更多個記憶體及/或儲存裝置元件504、一或更多個輸入/輸出(I/O)裝置506及匯流排506,該匯流排508允許各種元件及裝置彼此間能互相溝通。匯流排508代表任何數種匯流排結構之一或更多個種,該等匯流排結構包含記憶體匯流排或記憶體控制器、周邊匯流排、加速繪圖埠口及處理器或使用任何各種匯流排架構之當地匯流排。匯流排508可包含有線及/或無線匯流排。
記憶體/儲存裝置元件504代表一或更多個電腦儲存媒體。元件504可包含揮發性媒體(例如,隨機存取記憶體(RAM))及/或非揮發性媒體(例如,唯讀記憶體(ROM))、快取記憶體、光碟、磁碟等等)。元件504可包含固定式媒體(例如,隨機存取記憶體、唯讀記憶體、固定式硬碟等),且元件504亦包含可移除式媒體(例如,快取記憶體裝置、可移除式硬碟、光碟等)。
一或更多個輸入/輸出裝置506允許使用者輸入指令及資訊至計算裝置500,且一或更多個輸入/輸出裝置506亦允許將資訊呈現至使用者及/或其他元件或裝置。輸入裝置之實例包含鍵盤、游標控制裝置(例如,滑鼠)、麥克風、掃描器等等。輸出裝置之實例包含顯示裝置(例如,螢幕或投影機)、揚聲器、印表機、網路卡等等。
可於軟體或程式模組之一般上下文中描述本說明書中之各種技術。一般而言,軟體包含常式、程式、物件、元件、資料結構等等,該常式、程式、物件、元件、資料結構等等執行個別作業,或該常式、程式、物件、元件、資料結構等等實施個別抽象資料型態。可儲存該等模組及技術之實施於一些形式之電腦可讀取媒體上,或傳送該等模組及技術之實施至一些形式之電腦可讀取媒體上。電腦可讀取媒體能為任何可用媒介或媒體,該媒介或媒體可為供計算裝置存取。舉例而言但不加以限制,電腦可讀取媒體可包含「電腦可讀取儲存媒體」。
「電腦可讀取儲存媒體」包含揮發性及非揮發性、可移除式及不可移除式媒體,該等揮發性及非揮發性、可移除式及不可移除式媒體係以任何方法或技術實施以供儲存資訊(例如,電腦可讀取指令、資料結構、程式模組或其他資料)。電腦可讀取儲存媒體包含但不限於隨機存取記憶體、唯讀記憶體、電子可擦拭記憶體(EEPROM)、快取記憶體或其他記憶體技術、唯讀光碟(CD-ROM)、數位光碟(DVD)或其他光學儲存裝置、磁卡、磁帶、磁碟儲存裝置或其他磁性儲存裝置或任何其他用以儲存所欲儲存資訊之媒介及可供電腦存取之媒介。
結論
各種實施例可描述獨立於程式語言且與作業系統相關之一或更多個介面。或者,可配置與特定程式語言相關之編譯器以映射獨立介面描述至適當且特定於程式語言之建構。在一些實施例中,可配置應用程式以程式化決定一或更多個作業系統之介面。
雖然已用特定於結構特徵及/或方法行為之語言來描述所請求標的,但我們要瞭解,已定義於附加申請專利範圍之所請求標的並不限於上述之特定特徵或行為。當然,上述特定特徵及行為被揭示為實施申請專利範圍之示例性形式。
100...環境
102...計算裝置
104...處理器
106...電腦可讀取儲存媒體
108...作業系統
110...作業系統介面
112...描述語言檔案
114...編輯器/編譯器模組
116...二元元資料檔案
118...原始碼檔案
200...架構
202...作業系統
204...作業系統元件
206...新API家族
208...以COM為主之API家族
210...以平坦輸出為主之API家族
212...元資料
214...元資料
216...元資料
218...應用程式二元介面
220...應用程式
222...已產生之語言投影模組
302...步驟
304...步驟
306...步驟
308...步驟
402...延伸IDL檔案
404...編譯器
406...元資料檔案
408...應用程式
500...計算裝置
502...處理器/處理單元
504...記憶體/儲存裝置
506...輸入/輸出裝置
508...匯流排
各種圖式中之相同元件符號指示相同特徵。
第1圖圖示作業環境,在該作業環境中,可依照一或更多個實施例來使用本說明書中所描述之各種原則。
第2圖圖示依照一或更多個實施例之架構。
第3圖為流程圖,該流程圖依照一或更多個實施例來描述方法中之步驟。
第4圖圖示依照一或更多個實施例之關係圖。
第5圖圖示示例性系統,該示例性系統可經使用以實施一或更多個實施例。
100...環境
102...計算裝置
104...處理器
106...電腦可讀取儲存媒體
108...作業系統
110...作業系統介面
112...描述語言檔案
114...編輯器/編譯器模組
116...二元元資料檔案
118...原始碼檔案
权利要求:
Claims (20)
[1] 一種以電腦實施之方法,該以電腦實施之方法包含以下之步驟:接收針對資訊之一請求,該資訊與一或更多個可用作業系統介面相關;獲得該資訊,該資訊與該一或更多個可用作業系統介面相關,該等作業系統介面係使用一抽象型態系統來描述;決定一或更多個抽象型態,該一或更多個抽象型態與該一或更多個可用作業系統介面相關;及映射個別之已決定抽象型態至個別之各自型態,該等各自型態與至少一個特定程式語言相關。
[2] 如請求項1所述之電腦方法,該決定一或更多個抽象型態之步驟進一步包含以下之步驟:決定與該一或更多個抽象型態相關之行為。
[3] 如請求項2所述之電腦方法,該決定與該一或更多個抽象型態相關之行為之步驟進一步包含以下步驟:經由至少一個二元契約以可程式化方式決定行為。
[4] 如請求項1所述之電腦方法,與該一或更多個可用作業系統介面相關之該資訊進一步包含階層式資訊。
[5] 如請求項1所述之電腦方法,該資訊包含與至少一個介面相關之版本資訊、與該至少一個介面相關之個別參數之資料型態及與該至少一個介面相關之該等個別參數之一呼叫順序。
[6] 如請求項1所述之電腦方法,該獲得與該一或更多個可用作業系統介面相關資訊之步驟包含以下步驟:以可程式化方式獲得來自至少一個元資料檔案之資訊。
[7] 如請求項1所述之電腦方法,該抽象型態系統經配置以致使介面描述,該等介面描述獨立於該至少一個特定程式語言。
[8] 一種電腦可讀取儲存媒體,該電腦可讀取儲存媒體包含電腦可讀取指令,當執行該等電腦可讀取指令時,該等電腦可讀取指令實施:一或更多個應用程式介面(Application Programming Interface(API))模組,該一或更多個應用程式介面模組經配置以致使能以可程式化方式存取與一作業系統相關之功能性;與該一或更多個API模組相關之一或更多個元資料檔案,該一或更多個元資料檔案經配置以包含該一或更多個API之至少一個描述,該至少一個描述使用一抽象型態系統;一或更多個應用程式二元介面(Application Binary Interface(ABI))模組,該一或更多個應用程式二元介面模組經配置以包含用以呼叫該一或更多個API之一或更多個機器位之二元契約;及一或更多個已產生之語言投影模組,該一或更多個已產生之語言投影模組經配置以映射該抽象型態系統之至少一個型態至一或更多個特定程式語言之至少一個型態。
[9] 如請求項8所述之一或更多個電腦可讀取儲存媒體,該一或更多個電腦可讀取儲存媒體進一步包含指令,當執行該等指令時,該等指令實施:經由該一或更多個元資料檔案,至少一個應用程式經配置以可程式化方式決定至少一個介面,該介面包含在該至少一個API模組中。
[10] 如請求項8所述之一或更多個電腦可讀取儲存媒體,該已產生之語言投影模組包含至少一個代理伺服器,該至少一個代理伺服器經配置以使用一種方式來模擬該抽象型態系統之至少一個型態,該一種方式係為本地該一或更多個特定程式語言之方式。
[11] 如請求項8所述之一或更多個電腦可讀取儲存媒體,該二元契約用以呼叫該一或更多個API,該一或更多個API包含與該抽象型態系統之至少一個型態相關之至少一個行為定義。
[12] 如請求項8所述之一或更多個電腦可讀取儲存媒體,該一或更多個API模組包含一物件導向類別;該一或更多個元資料檔案經配置以使用一種物件導向方式來描述該物件導向類別。
[13] 如請求項12所述之一或更多個電腦可讀取儲存媒體,該物件導向類別包含一檔案類別。
[14] 如請求項8所述之一或更多個電腦可讀取儲存媒體,該一或更多個元資料檔案經配置以包含資訊,該資訊包含與至少一個API相關之版本資訊、與至少一個API相關之每一參數之資料型態及與至少一個API相關之每一參數之一呼叫順序。
[15] 一種電腦可讀取儲存媒體,該電腦可讀取儲存媒體具體化電腦可執行指令,該等電腦可執行指令可經執行以進行以下步驟:使用一或更多個介面以顯露一或更多個特徵,該一或更多個特徵與一作業系統相關;使用一抽象型態系統及一描述語言以描述該一或更多個介面,該描述語言經配置以致使該一或更多個介面之階層式描述;至少部份基於該抽象型態系統及描述語言,以產生該一或更多個介面之一或更多個機器可讀取描述;定義與該抽象型態系統相關之一或更多個二元契約,該一或更多個二元契約經配置以包含一或更多個規則,該一或更多個規則描述與該抽象型態系統之至少一個型態相關之行為;及至少部份基於該一或更多個二元契約,以映射該抽象型態系統至一或更多個特定程式語言。
[16] 如請求項15所述之一或更多個電腦可讀取儲存媒體,該等機器可讀取描述包含至少一個元資料檔案。
[17] 如請求項15所述之一或更多個電腦可讀取儲存媒體,該抽象型態系統之該至少一個型態包含一函數指標。
[18] 如請求項15所述之一或更多個電腦可讀取儲存媒體,該一或更多個介面包含至少一個物件導向介面。
[19] 如請求項15所述之一或更多個電腦可讀取儲存媒體,該一或更多個電腦可讀取儲存媒體進一步包含指令,該等指令經執行以產生至少一個溝通代理伺服器,該至少一個溝通代理伺服器與該一或更多個介面相關。
[20] 如請求項15所述之一或更多個電腦可讀取儲存媒體,該一或更多個特徵經限制於按照一類別工廠設計樣式之一實施,該一或更多個特徵與該作業系統相關。
类似技术:
公开号 | 公开日 | 专利标题
TWI577539B|2017-04-11|用於運行時間系統的電腦實施方法、電腦可讀取儲存記憶體及系統
US9934005B2|2018-04-03|Dynamically building locale objects or subsections of locale objects based on historical data
EP3188009A1|2017-07-05|Development, delivery, deployment and operation of an application
US20160154673A1|2016-06-02|Methods, systems, and computer program products for providing a minimally complete operating environment
JP6951442B2|2021-10-20|シブリング・コール処理のためのコンピュータ・プログラム製品、コンピュータ・システムおよびコンピュータによって実施される方法
US9141353B2|2015-09-22|Dynamically building locale objects at run-time
US8146109B2|2012-03-27|Version resiliency for a host application and custom code
US7917893B2|2011-03-29|Using a system of annotations to generate views and adapters
US20080052671A1|2008-02-28|System, method and program product for providing content based designations for programming objects
US11188316B2|2021-11-30|Performance optimization of class instance comparisons
US9792093B2|2017-10-17|Dynamically building subsections of locale objects at run-time
CN113721975A|2021-11-30|文件构建方法及系统、装置、电子设备和存储介质
CN114048415A|2022-02-15|表单生成方法及装置、电子设备和计算机可读存储介质
US8135943B1|2012-03-13|Method, apparatus, and computer-readable medium for generating a dispatching function
同族专利:
公开号 | 公开日
TWI533217B|2016-05-11|
CN103718155A|2014-04-09|
AU2017200899A1|2017-03-02|
JP2014522063A|2014-08-28|
AU2011374897A1|2014-02-27|
BR112014003123A2|2017-02-21|
CA2844492A1|2013-02-14|
CN103718155B|2017-09-26|
RU2601198C2|2016-10-27|
EP2742420A4|2015-02-11|
IN2014CN00797A|2015-04-03|
KR101795844B1|2017-11-08|
RU2014104582A|2015-08-20|
CA2844492C|2018-11-20|
MX2014001629A|2014-05-28|
EP2742420A1|2014-06-18|
AU2011374897B2|2016-11-10|
EP2742420B1|2020-09-02|
US20140325534A1|2014-10-30|
JP5933002B2|2016-06-08|
US9563487B2|2017-02-07|
US8776094B2|2014-07-08|
US20130042258A1|2013-02-14|
MX336195B|2016-01-11|
TW201609366A|2016-03-16|
BR112014003123B1|2021-07-20|
WO2013022465A1|2013-02-14|
TWI577539B|2017-04-11|
AU2017200899B2|2017-12-07|
KR20140057547A|2014-05-13|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
US5097533A|1988-11-29|1992-03-17|International Business Machines Corporation|System and method for interfacing computer application programs written in different languages to a software system|
US5371885A|1989-08-29|1994-12-06|Microsoft Corporation|High performance file system|
JPH0540682A|1990-06-08|1993-02-19|Internatl Business Mach Corp <Ibm>|アトミシテイを有する記憶装置の高可用性耐故障再配置|
US5339422A|1991-03-07|1994-08-16|Digital Equipment Corporation|System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment|
US5964835A|1992-12-17|1999-10-12|Tandem Computers Incorporated|Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source|
US5594863A|1995-06-26|1997-01-14|Novell, Inc.|Method and apparatus for network file recovery|
US5910180A|1995-11-21|1999-06-08|Diamond Multimedia Systems, Inc.|Context virtualizing device driver architecture|
US5887172A|1996-01-10|1999-03-23|Sun Microsystems, Inc.|Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends|
CA2199675C|1996-05-08|2002-03-26|John C. Goodwin, Iii|System and method for managing electronic price label overlays|
US6035342A|1997-03-19|2000-03-07|Microsoft Corporation|Method and computer program product for implementing object relationships|
US6026238A|1997-08-18|2000-02-15|Microsoft Corporatrion|Interface conversion modules based upon generalized templates for multiple platform computer systems|
US6269431B1|1998-08-13|2001-07-31|Emc Corporation|Virtual storage and block level direct access of secondary storage for recovery of backup data|
US6920537B2|1998-12-31|2005-07-19|Emc Corporation|Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel|
US20050182828A1|1999-04-21|2005-08-18|Interactual Technologies, Inc.|Platform specific execution|
US6745385B1|1999-09-01|2004-06-01|Microsoft Corporation|Fixing incompatible applications by providing stubs for APIs|
EP1117033A1|2000-01-14|2001-07-18|Sun Microsystems, Inc.|Dynamic dispatch function|
US6629264B1|2000-03-30|2003-09-30|Hewlett-Packard Development Company, L.P.|Controller-based remote copy system with logical unit grouping|
JP3562435B2|2000-04-12|2004-09-08|日本電気株式会社|コンポーネントの自動生成装置|
US6813770B1|2000-04-21|2004-11-02|Sun Microsystems, Inc.|Abstract syntax notation to interface definition language converter framework for network management|
US7783720B1|2000-04-21|2010-08-24|Oracle America, Inc.|CORBA metadata gateway to telecommunications management network|
US7577834B1|2000-05-09|2009-08-18|Sun Microsystems, Inc.|Message authentication using message gates in a distributed computing environment|
US6691302B1|2000-05-31|2004-02-10|Siemens Information & Communications Networks, Inc.|Interfacing a service component to a native API|
US6643672B1|2000-07-31|2003-11-04|Hewlett-Packard Development Company, Lp.|Method and apparatus for asynchronous file writes in a distributed file system|
US6925476B1|2000-08-17|2005-08-02|Fusionone, Inc.|Updating application data including adding first change log to aggreagate change log comprising summary of changes|
US6928555B1|2000-09-18|2005-08-09|Networks Associates Technology, Inc.|Method and apparatus for minimizing file scanning by anti-virus programs|
US7631084B2|2001-11-02|2009-12-08|Juniper Networks, Inc.|Method and system for providing secure access to private networks with client redirection|
US7065742B1|2000-10-30|2006-06-20|Microsoft Corporation|System and method for dynamically processing declarative language instance data|
US7574346B2|2000-10-30|2009-08-11|Microsoft Corporation|Kernel emulator for non-native program modules|
US7730213B2|2000-12-18|2010-06-01|Oracle America, Inc.|Object-based storage device with improved reliability and fast crash recovery|
US6993744B2|2000-12-19|2006-01-31|Tajen Corporation|Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time|
US20020161596A1|2001-04-30|2002-10-31|Johnson Robert E.|System and method for validation of storage device addresses|
US6996832B2|2001-05-30|2006-02-07|Bea Systems, Inc.|System and method for software component plug-in framework|
CA2349905A1|2001-06-07|2002-12-07|Ibm Canada Limited-Ibm Canada Limitee|System and method of mapping between software objects and structured language element based documents|
US6643612B1|2001-06-28|2003-11-04|Atrica Ireland Limited|Mechanism and protocol for per connection based service level agreement measurement|
US7165239B2|2001-07-10|2007-01-16|Microsoft Corporation|Application program interface for network software platform|
US7581231B2|2001-07-10|2009-08-25|Microsoft Corporation|Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer|
US7546602B2|2001-07-10|2009-06-09|Microsoft Corporation|Application program interface for network software platform|
US20040201600A1|2001-12-14|2004-10-14|Microsoft Corporation|Methods and system for providing an XML-based interface description language|
US7330971B1|2002-01-11|2008-02-12|Microsoft Corporation|Delegated administration of namespace management|
US7072915B2|2002-01-22|2006-07-04|International Business Machines Corporation|Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time|
JP2003223350A|2002-01-29|2003-08-08|Ricoh Co Ltd|データベースシステム|
US20030188043A1|2002-03-27|2003-10-02|Woodall Thomas R.|Two layer middleware architecture with an intermediate target independent interface|
US7320123B2|2002-04-01|2008-01-15|Sun Microsystems, Inc.|Method and system for detecting deprecated elements during runtime|
US7424717B2|2002-05-01|2008-09-09|Bea Systems, Inc.|Systems and methods for business process plug-in development|
US7334124B2|2002-07-22|2008-02-19|Vormetric, Inc.|Logical access block processing protocol for transparent secure file storage|
US7219339B1|2002-10-29|2007-05-15|Cisco Technology, Inc.|Method and apparatus for parsing and generating configuration commands for network devices using a grammar-based framework|
US7412658B2|2002-11-14|2008-08-12|Sap Ag|Modeling system for graphic user interface|
US7171539B2|2002-11-18|2007-01-30|Arm Limited|Apparatus and method for controlling access to a memory|
US7546607B2|2002-11-19|2009-06-09|Microsoft Corporation|Native code exposing virtual machine managed object|
US7784044B2|2002-12-02|2010-08-24|Microsoft Corporation|Patching of in-use functions on a running computer system|
US6993603B2|2002-12-09|2006-01-31|Microsoft Corporation|Managed file system filter model and architecture|
US7020746B2|2003-01-28|2006-03-28|Microsoft Corporation|Method and system for an atomically updated, central cache memory|
US7197417B2|2003-02-14|2007-03-27|Advantest America R&D Center, Inc.|Method and structure to develop a test program for semiconductor integrated circuits|
US7846023B2|2003-03-27|2010-12-07|Microsoft Corporation|Application-centric user interface techniques|
US7322029B2|2003-05-08|2008-01-22|American Megatrends, Inc.|Method and system for recovering program code in a computer system|
US7383255B2|2003-06-23|2008-06-03|Microsoft Corporation|Common query runtime system and application programming interface|
US7380235B1|2003-06-27|2008-05-27|Microsoft Corporation|Application program interface call replay tool|
US7519951B2|2003-09-30|2009-04-14|International Business Machines Corporation|Multi-attribute dynamic link library packaging|
US20050091271A1|2003-10-23|2005-04-28|Kasy Srinivas|Systems and methods that schematize audio/video data|
US7721254B2|2003-10-24|2010-05-18|Microsoft Corporation|Programming interface for a computer platform|
US7493592B2|2003-10-24|2009-02-17|Microsoft Corporation|Programming interface for a computer platform|
US8055907B2|2003-10-24|2011-11-08|Microsoft Corporation|Programming interface for a computer platform|
US20050114832A1|2003-11-24|2005-05-26|Microsoft Corporation|Automatically generating program code from a functional model of software|
US7392527B2|2003-12-10|2008-06-24|Microsoft Corporation|Driver-specific context for kernel-mode shimming|
GB2409735A|2003-12-30|2005-07-06|Ibm|Method and system for change management of interfaces in distributed computer systems|
US7440966B2|2004-02-12|2008-10-21|International Business Machines Corporation|Method and apparatus for file system snapshot persistence|
US7694315B2|2004-02-13|2010-04-06|Microsoft Corporation|Schema-based machine generated programming models|
US7444621B2|2004-02-20|2008-10-28|Microsoft Corporation|Method and system for providing a common operating system|
US20050216552A1|2004-03-24|2005-09-29|Samuel Fineberg|Communication-link-attached persistent memory system|
US7707583B2|2004-05-20|2010-04-27|Sap Ag|Robust sharing of runtime systems|
EP1759313A2|2004-05-21|2007-03-07|Computer Associates Think, Inc.|Method and apparatus for updating a database using table staging and queued relocation and deletion|
US20050268308A1|2004-05-28|2005-12-01|Nokia Corporation|System and method for implementing a general application program interface|
US8306991B2|2004-06-07|2012-11-06|Symantec Operating Corporation|System and method for providing a programming-language-independent interface for querying file system content|
US7941402B2|2004-09-24|2011-05-10|Sap Ag|Storing and using classes in databases|
JP4104586B2|2004-09-30|2008-06-18|株式会社東芝|ファイル管理機能を備えたファイルシステム及びファイル管理方法|
JP4956922B2|2004-10-27|2012-06-20|ソニー株式会社|記憶装置|
US8060856B2|2004-11-18|2011-11-15|Aol Inc.|Native objects accessible by platform neutral API|
US7464124B2|2004-11-19|2008-12-09|International Business Machines Corporation|Method for autonomic data caching and copying on a storage area network aware file system using copy services|
US20060129745A1|2004-12-11|2006-06-15|Gunther Thiel|Process and appliance for data processing and computer program product|
US7617259B1|2004-12-31|2009-11-10|Symantec Operating Corporation|System and method for managing redundant storage consistency at a file system level|
US20060161910A1|2005-01-14|2006-07-20|International Business Machines Corporation|Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment|
US7519713B2|2005-02-04|2009-04-14|Microsoft Corporation|Mapping between object oriented and service oriented representations of a distributed application|
US7950023B2|2005-02-04|2011-05-24|Microsoft Corporation|Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes|
US20060195460A1|2005-02-28|2006-08-31|Microsoft Corporation|Data model for object-relational data|
US7325007B2|2005-03-07|2008-01-29|Microsoft Corporation|System and method for supporting non-native data types in a database API|
US7685635B2|2005-03-11|2010-03-23|Microsoft Corporation|Systems and methods for multi-level intercept processing in a virtual machine environment|
US7716661B2|2005-03-16|2010-05-11|Microsoft Corporation|Embedded device update service|
JP4591148B2|2005-03-25|2010-12-01|富士ゼロックス株式会社|機能変換装置、機能変換方法、機能変換プログラム、デバイスデータ生成装置、デバイスデータ生成方法、及びデバイスデータ生成プログラム|
US8898123B2|2005-06-07|2014-11-25|Rockwell Automation Technologies, Inc.|Method and system for interface configuration via device-side scripting|
US20060287890A1|2005-06-15|2006-12-21|Vanderbilt University|Method and apparatus for organizing and integrating structured and non-structured data across heterogeneous systems|
US7992140B2|2005-07-29|2011-08-02|Microsoft Corporation|Compiler supporting programs as data objects|
US20070039010A1|2005-08-15|2007-02-15|Microsoft Corporation|Automatic generation of software code to facilitate interoperability|
CN1936853B|2005-09-22|2010-05-05|康佳集团股份有限公司|嵌入式设备的数据掉电保护和修复方法|
KR101198583B1|2005-10-12|2012-11-06|한국과학기술원|메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체|
US7716246B2|2005-11-30|2010-05-11|Microsoft Corporation|Dynamic mechanism for providing metadata|
US7624257B2|2005-11-30|2009-11-24|International Business Machines Corporation|Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads|
US7890659B2|2005-12-15|2011-02-15|Microsoft Corporation|Conforming web services to an updated contract|
US7870355B2|2005-12-19|2011-01-11|Commvault Systems, Inc.|Log based data replication system with disk swapping below a predetermined rate|
US20070156913A1|2005-12-30|2007-07-05|Hiroyuki Miyamoto|Method for enabling extension points through plug-ins|
US8082555B2|2006-02-21|2011-12-20|Microsoft Corporation|Routing calls via reflective interfaces and a proxy|
US7552148B2|2006-02-28|2009-06-23|Microsoft Corporation|Shutdown recovery|
US7620721B2|2006-02-28|2009-11-17|Microsoft Corporation|Pre-existing content replication|
US9081585B1|2006-03-31|2015-07-14|The Mathworks, Inc.|Interfacing a device driver with an application using a virtual driver interface and a strategy|
AT468556T|2006-04-13|2010-06-15|Microsoft Corp|Virtuelles ausführungssystem für ressourcen- beschränkte geräte|
US7730351B2|2006-05-15|2010-06-01|Oracle America, Inc.|Per file dirty region logging|
JP2007316944A|2006-05-25|2007-12-06|Toshiba Corp|データ処理装置、データ処理方法、およびデータ処理プログラム|
US8104048B2|2006-08-04|2012-01-24|Apple Inc.|Browsing or searching user interfaces and other aspects|
AT496350T|2006-09-11|2011-02-15|Software Ag|System zur verwaltung des lebenszyklus einer dienstorientierten architektur|
US20080077590A1|2006-09-22|2008-03-27|Honeywell International Inc.|Efficient journaling and recovery mechanism for embedded flash file systems|
GB0619147D0|2006-09-28|2006-11-08|Ibm|A method, apparatus or software for managing software component version identifications in a componentised software system|
WO2008047443A1|2006-10-20|2008-04-24|Fujitsu Limited|Dispositif à mémoire et procédé de réglage de rafraîchissement|
US7840752B2|2006-10-30|2010-11-23|Microsoft Corporation|Dynamic database memory management policies|
US7971208B2|2006-12-01|2011-06-28|Microsoft Corporation|Developing layered platform components|
US8370818B2|2006-12-02|2013-02-05|Time Warner Cable Inc.|Methods and apparatus for analyzing software interface usage|
US20080140724A1|2006-12-06|2008-06-12|David Flynn|Apparatus, system, and method for servicing object requests within a storage controller|
US7956721B2|2007-01-09|2011-06-07|Homerun Holdings Corporation|Power conserving mobile transmitter|
JP2008293218A|2007-05-23|2008-12-04|Nec Corp|ファイル管理システム、ファイル管理方法、ファイル管理プログラム|
CN101051324A|2007-05-23|2007-10-10|中兴通讯股份有限公司|一种内存数据库的事务管理方法|
US8732386B2|2008-03-20|2014-05-20|Sandisk Enterprise IP LLC.|Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory|
US20090012932A1|2007-07-03|2009-01-08|Xeround Systems Ltd.|Method and System For Data Storage And Management|
US7720800B2|2007-07-06|2010-05-18|International Business Machines Corporation|Method and approach to hosting versioned web services|
JP2009020705A|2007-07-12|2009-01-29|Hitachi Ltd|Guiアプリケーション開発支援装置及び開発支援方法|
US20090024986A1|2007-07-19|2009-01-22|Microsoft Corporation|Runtime code modification|
US8667482B2|2007-08-10|2014-03-04|Microsoft Corporation|Automated application modeling for application virtualization|
KR100927442B1|2007-08-16|2009-11-19|주식회사 마크애니|가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법|
US8364683B2|2007-08-30|2013-01-29|International Business Machines Corporation|Importing and reconciling resources from disjoint name spaces to a common namespace|
US20090132285A1|2007-10-31|2009-05-21|Mckesson Information Solutions Llc|Methods, computer program products, apparatuses, and systems for interacting with medical data objects|
KR101528853B1|2007-12-14|2015-07-01|삼성전자주식회사|Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체|
US8250524B2|2007-12-21|2012-08-21|Microsoft Corporation|Contract programming for code error reduction|
US9058407B2|2008-01-22|2015-06-16|Oracle International Corporation|Persistent multimedia content versioning|
EP2088506A1|2008-02-06|2009-08-12|Software AG|Method and system for calling services from a remote client|
JP5386111B2|2008-05-22|2014-01-15|株式会社日立ソリューションズ|ファイルシステムの記録方法|
US9639375B2|2008-08-28|2017-05-02|Red Hat, Inc.|Generation of language bindings for libraries using data from compiler generated debug information|
US8484204B2|2008-08-28|2013-07-09|Microsoft Corporation|Dynamic metadata|
US8595714B1|2009-03-04|2013-11-26|Amazon Technologies, Inc.|User controlled environment updates in server cluster|
GB0907171D0|2009-04-27|2009-06-10|Springsource Ltd|Method and apparatus for automatically generating source code files in a storage unit|
US9075667B2|2009-05-21|2015-07-07|Microsoft Technology Licensing, Llc|Dynamic binding directed by static types|
US8510729B2|2009-05-21|2013-08-13|Salesforce.Com, Inc.|System, method and computer program product for versioning and deprecation of components of an application|
US8495621B2|2009-06-15|2013-07-23|Microsoft Corporation|Catalog-based software component management|
US8539475B2|2009-09-29|2013-09-17|Oracle America, Inc.|API backward compatibility checking|
US8433865B2|2009-12-11|2013-04-30|Microsoft Corporation|Consistency without ordering dependency|
US10089119B2|2009-12-18|2018-10-02|Microsoft Technology Licensing, Llc|API namespace virtualization|
US8983982B2|2009-12-22|2015-03-17|Bmc Software, Inc.|Mechanism for deprecating object oriented data|
US8572591B2|2010-06-15|2013-10-29|Microsoft Corporation|Dynamic adaptive programming|
US8224780B2|2010-06-15|2012-07-17|Microsoft Corporation|Checkpoints for a file system|
US8793440B2|2010-06-17|2014-07-29|Microsoft Corporation|Error detection for files|
US9411634B2|2010-06-21|2016-08-09|Microsoft Technology Licensing, Llc|Action framework in software transactional memory|
US9483284B2|2011-02-25|2016-11-01|Red Hat, Inc.|Version compatibility determination|
US8776094B2|2011-08-11|2014-07-08|Microsoft Corporation|Runtime system|
US9619779B2|2011-08-26|2017-04-11|Apple Inc.|Client-side policy enforcement of developer API use|
US20130055291A1|2011-08-31|2013-02-28|Microsoft Corporation|Describing native application programming interfaces of an operating system with metadata|
US9262183B2|2012-04-23|2016-02-16|Microsoft Technology Licensing, Llc|Self-service composed web APIs|
US8954479B2|2012-06-13|2015-02-10|International Business Machines Corporation|End-to-end interoperability and workflows from building architecture design to one or more simulations|
US9444899B2|2012-12-26|2016-09-13|Microsoft Technology Licensing, Llc|Use of internet information services logging to collect user information in an asynchronous manner|
US8793359B1|2013-11-25|2014-07-29|Software Ag|Systems and/or methods for intelligently detecting API key domains|
US9110770B1|2014-03-04|2015-08-18|Amazon Technologies, Inc.|Assessing quality of code in an open platform environment|US10089119B2|2009-12-18|2018-10-02|Microsoft Technology Licensing, Llc|API namespace virtualization|
US8776094B2|2011-08-11|2014-07-08|Microsoft Corporation|Runtime system|
US8695021B2|2011-08-31|2014-04-08|Microsoft Corporation|Projecting native application programming interfaces of an operating system into other programming languages|
US20140237368A1|2013-02-19|2014-08-21|Microsoft Corporation|Proxying non-interactive controls to enable narration|
US10228920B2|2014-05-13|2019-03-12|Oracle International Corporation|Automatic selection of an abstract data type|
US10635504B2|2014-10-16|2020-04-28|Microsoft Technology Licensing, Llc|API versioning independent of product releases|
US10452409B2|2015-10-23|2019-10-22|Oracle International Corporation|Universal adapter for native calling|
US10120655B2|2016-06-03|2018-11-06|Microsoft Technology Licensing, Llc.|Seamless high performance interoperability between different type graphs that share a garbage collector|
US11050607B2|2017-06-21|2021-06-29|Red Hat, Inc.|Proxy with a function as a servicesupport|
CN109814861A|2017-11-21|2019-05-28|海云数据|为终端用户提供能力的开放平台|
US10635416B2|2018-07-31|2020-04-28|Microsoft Technology Licensing, Llc|Property filtering|
US11036482B1|2020-12-22|2021-06-15|Temper Systems, Inc.|Deriving many idiomatic programming language interfaces|
US10963228B1|2020-12-22|2021-03-30|Temper Systems, Inc.|Preventing garbage object accumulation on minimal runtimes|
US11163559B1|2020-12-28|2021-11-02|Temper Systems, Inc.|Cross-publishing software libraries to module repositories|
法律状态:
2019-02-11| MM4A| Annulment or lapse of patent due to non-payment of fees|
优先权:
申请号 | 申请日 | 专利标题
US13/207,806|US8776094B2|2011-08-11|2011-08-11|Runtime system|
[返回顶部]